//导入express
var express = require('express');
var route = express.Router();
//导入模型
var User = require('../models/User')
var http = require("http");
var formidable = require('formidable');
var fs = require("fs");
var util = require("util");
var sd = require("silly-datetime");
var path = require("path");
//定义返回变量
var registerData;
// 初始化格式
route.use(function(req,res,next){
    registerData={
        code:0,
        message:''
    }
    // 进行下面的代码
    next()
})

//注册
route.post('/user/register',function(req,res,next){
	var _username = req.body.username;
    var _password = req.body.password;
    console.log(_username)
    console.log(_password)
    if(_username ==''){
        registerData.code = 1;
        registerData.message = '用户名不能为空';
        res.json(registerData);
        return;
    }
    if(_password==''){
        registerData.code = 2;
        registerData.message = '密码不能为空';
        res.json(registerData);
        return;
    }
    User.findOne({
        username:_username
    }).then(function(userInfo){
    	console.log(userInfo)
        // 判断用户是否存在
        // 如果存在
        if(userInfo){
            registerData.code = 3;
            registerData.message = '用户名已经被注册';
            res.json(registerData);
            return;
        }
        // 保存用户注册信息到数据库中
        var user  = new User({
            username:_username,
            password:_password
        }) 
        //接下来保存数据
        return user.save()
    }).then(function(newUserInfo){
        registerData.message = '注册成功';
        // 返回数据格式化json
        res.json(registerData);
    })
})

//登录
route.post('/user/login',function(req,res,next){
	var username = req.body.username;
    var password = req.body.password;
    if(username =='' || password == ''){
        registerData.code = 1;
        registerData.message = '用户名或密码不能为空';
        res.json(registerData);
        return;
    }
    User.findOne({
        username:username,
        password:password
    }).then(function(userInfo){
    	console.log(userInfo)
        // 判断用户是否存在
        // 如果存在
        if(!userInfo){
            registerData.code = 2;
            registerData.message = '用户名或密码错误';
            res.json(registerData);
            return;
        }
        console.log(userInfo)
        registerData.message = '登录成功';
        registerData.userInfo = {
        	_id: userInfo._id,
            username: userInfo.username,
            isAdmin:userInfo.isAdmin,
            headimg:userInfo.headImg
        }
        res.json(registerData);
    })
})

//登录
route.post('/user/logout',function(req,res,next){
	registerData.message = '退出成功';
    res.json(registerData);
})
//修改
route.post('/user/file',function(req,res,next){
	//Creates a new incoming form.
        var form = new formidable.IncomingForm();
        //设置文件上传存放地址
        form.uploadDir = __dirname +"/uploads";
        console.log(form.uploadDir)
        //执行里面的回调函数的时候，表单已经全部接收完毕了。
        form.parse(req, function(err, fields, files) {
            //使用第三方模块silly-datetime
            var t = sd.format(new Date(),'YYYYMMDDHHmmss');
            //生成随机数
            var ran = parseInt(Math.random() * 8999 +10000);
            //拿到扩展名
            var extname = path.extname(files.tupian.name);
            //旧的路径
            var oldpath =  files.tupian.path;
            console.log(oldpath)
            //新的路径
            var newpath = __dirname +'/uploads/'+t+ran+extname;
            console.log(newpath)
            //改名
            fs.rename(oldpath,newpath,function (err) {
                if(err){
                    throw  Error("改名失败");
                    registerData.code = 1;
                    registerData.message = '上传失败';
                	res.json(registerData);
                }
                res.writeHead(200, {'content-type': 'text/plain'});
                res.end("success");
            });
            //所有的文本域、单选框，都在fields存放；

//          res.end("success");
        });
})
//获取uese列表
route.post('/userlist',function(req,res,next){
	User.find().then((user)=>{
		registerData.user = user
        res.json(registerData);
	})
})
module.exports = route